import {Material} from './Material.js';
import {Color} from '../math/Color.js';

/**
 * parameters = {
 *  color: <hex>,
 *  opacity: <float>,
 *  map: new THREE.Texture( <Image> ),
 *  alphaMap: new THREE.Texture( <Image> ),
 *
 *  size: <float>,
 *  sizeAttenuation: <bool>
 *
 *  morphTargets: <bool>
 * }
 */

function PointsMaterial(parameters) {

  Material.call(this);

  this.type = 'PointsMaterial';

  this.color = new Color(0xffffff);

  this.map = null;

  this.alphaMap = null;

  this.size = 1;
  this.sizeAttenuation = true;

  this.morphTargets = false;

  this.setValues(parameters);

}

PointsMaterial.prototype = Object.create(Material.prototype);
PointsMaterial.prototype.constructor = PointsMaterial;

PointsMaterial.prototype.isPointsMaterial = true;

PointsMaterial.prototype.copy = function (source) {

  Material.prototype.copy.call(this, source);

  this.color.copy(source.color);

  this.map = source.map;

  this.alphaMap = source.alphaMap;

  this.size = source.size;
  this.sizeAttenuation = source.sizeAttenuation;

  this.morphTargets = source.morphTargets;

  return this;

};


export {PointsMaterial};
